[Terraform] Terraform入門(2) - 變數

前言

本篇為Terraform系列的第二篇,紀錄Terraform如何定義及應用變數

Hands on Lab

變數宣告

variable開頭做變數宣告,後面接自定義的變數名稱,如下方範例,變數名為iam_user_name,變數值為my_iam_user

1
2
3
variable "iam_user_name" {
default = "my_iam_user"
}

若無給予default這個屬性的話,執行terraform apply後會要求輸入值。

匯出變數

除了上面使用變數宣告的方法外,也可以在終端機中輸入指令來定義變數,如:

Mac版

export TF_VAR_iam_user_name=VALUE的語法來匯出變數。

1
export TF_VAR_iam_user_name="test_prefix"

匯出變數後執行terraform plan -refresh=false查看變化

上圖可觀察到iam_user_name替換成test_prefix

Windows版

相異於Mac指令,Windows版採用SET VARIABLE=VALUE指令來匯出變數。

取用變數值

var.*的方式來取得變數值,如延續上一篇文的範例:

1
2
3
4
resource "aws_iam_user" "my_iam_user" {
count = 2
name = "${var.iam_user_name}_${count.index}"
}

更改後執行terraform apply指令。
另外也可以透過terraform console的方式驗證是否能取得變數值。

賦予變數型態

既然能給變數值,那當然也可以定義變數型態啦,只要在宣告變數的地方給予type屬性,並指定哪個型態作為屬性值。如:

1
2
3
4
variable "iam_user_name" {
default = "my_iam_user"
type = string #any(預設) or number, boolen, list, map
}

統一管理變數(variable)

我們可以另外建一個terraform.tfvars或是*.auto.tfvars檔案來集中管理變數。

範例

於根目錄下建立一terraform.tfvars檔案,此檔寫入

1
iam_user_name = "tf_file_test_iam_user_name"

表示宣告變數iam_user_name,並賦予值tf_file_test_iam_user_name
執行terraform plan -refresh=false查看變化

Comments